% format_spill_log_for_output.m
% 将 solution.spill_map (以node_id为键) 转换为最终输出所需的格式 (以BufId为键的事件日志)

function spill_output_log = format_spill_log_for_output(spill_map_from_solution, graph)
    
    % 初始化输出为一个空的元胞数组
    spill_output_log = {};
    
    % 获取所有spill_in节点的ID
    node_ids = cell2mat(keys(spill_map_from_solution));
    if isempty(node_ids)
        return; % 如果没有spill，直接返回
    end
    
    % 按node_id排序，以确保spill事件按发生顺序列出
    sorted_node_ids = sort(node_ids);
    
    % 遍历每个spill_in事件
    for i = 1:length(sorted_node_ids)
        node_id = sorted_node_ids(i);
        
        % 从map中获取该事件对应的地址
        address = spill_map_from_solution(node_id);
        
        % 从graph中查找该spill_in节点对应的buf_id
        buf_id = graph.nodes(node_id).buf_id;
        
        % 将 {buf_id, address} 这对信息存入日志
        spill_output_log{end+1} = {buf_id, address};
    end
end